Dungeons of Daggorath with Shield Fix patch 2017-8-11 Packaged by Mr. Reaper (Aaron Oliver) www.tinyvast.com With thanks to Chris Cantrell http://computerarcheology.com Sections: --------- 1. Shield Fix Info 2. Emulator Info 3. Hacking Daggorath ============== THE SHIELD FIX ============== As you may know, the original Dungeons of Daggorath game contained a bug which made the Leather and Bronze shields virtually useless. Each shield has two numbers representing its defensive values: Physical Defense and Magical Defense. However, these numbers were reversed (or referenced incorrectly in the damage routine) so that the Magical Defense value was instead applied toward Physical damage, and vice-versa. This means that the non-magical shields (Leather and Bronze), which are supposed to offer no protection against Magical damage, instead provide no protection against normal damage. Of course, that means they do provide some protection from magical damage, but by the time you are dealing with the really nasty monsters which do magical damage, that small amount of protection isn't going to help much. And once you reach level 4, where you really start facing many of the strongest magical monsters, you will be able to find the far superior magical Mithril Shield. If you are interested in more details about this bug and many of the other behind-the-scenes features of Daggorath, you can check out the Internals Page: http://archive.li/mJKIz The PC Port of Daggorath does contain the option to fix the shield values, however I was never satisfied with the gameplay of the port. The timing wasn't quite right, and it lacks the colors generated by an actual Color Computer. The game just looks too flat in black and white -- I like the blue and orange-red artifaced colors; they evoke the feel of cold, stone dungeon walls splashed with flickering torchlight. So if you want to stay close to the original feel of the game, it has to be played on an emulator using a rom or disk images of the game (XRoar runs Daggorath nearly flawlessly, with original timing, color, and sounds). But then you're back to having the shield bug. So, I looked into hacking the roms to fix the shield bug with a hex editor. I found the values that would need to be changed by looking on Chris's site: http://computerarcheology.com/CoCo/Daggorath/Code.html Then Chris directed me to the correct locations that needed edited in the files. Included in this package are both .rom (cartridge) and .dsk versions of Daggorath with the shield fix applied. These should should run on any emulator which can load these formats. So now the shields will protect you as they should, making the game SLIGHTLY less impossible! Holding the Leather Shield will mean you take only 84% of incoming non-magical damage. Holding the Bronze Shield will mean you take only 75% of incoming non-magical damage. Of course, the superb Mithril Shield, as always, will block 50% of ALL incoming damage. ============== EMULATOR NOTES ============== I recommend XRoar, as it is easy to use and very accurate for emulating Daggorath. http://www.6809.org.uk/xroar/ At minimum, you will need to find bas13.rom to make XRoar work. Place that file in the directory with XRoar, then you can just load the Daggorath .rom file using: File -> Run or CTRL+SHIFT+L To get the correct artifaced colors, you need to select: Hardware -> Machine -> Tandy CoCo (NTSC) Or you can create an xroar.conf file to do either or both those things automatically by including the following lines: -default-machine cocous -run Dungeons of Daggorath (shield fix).rom Some useful commands for XRoar: ------------------------------ CTRL+F or F11 Toggle fullscreen mode. CTRL+S Save a snapshot -- name the file [anything].sna CTRL+L Load a snapshot. ------------------------------ If you're wanting to use the .dsk version (and other advanced disk functions in XRoar), you will also need to find disk11.rom and extbas11.rom (all these files can be found here: http://www.colorcomputerarchive.com ) You will probably also want to select Tools -> Keyboard Translation to make it easier to use the emulator this way, or add it to the xroar.cfg file: -kbd-translate To load the .dsk file in XRoar use: File -> Drive 1 -> Insert Disk... or CTRL+L (or add to the xroar.cfg file): -load DagShFix.dsk And if you're actually wanting to be able make permanent changes to dsk files via the emulator, you have to set: File -> Drive 1 -> Write Back (or in the xroar.cfg): -disk-write-back Once you have loaded the .dsk file, just type: RUN "DAG" and Dungeons of Daggorath should start after a moment. =========================== NOTES FOR HACKING DAGGORATH =========================== From Chris's page, the shield defensive values in the original files are stored like: 0B 60 80 00 ; Bronze Shield 10 6C 80 00 ; Leather Shield The first number represents the item's reference number ("10" for a Leather Shield), and the next two numbers are the hexidecimal values for the Magical then Physical protection they offer, given as a multiplier for the damage you take when holding it (see the Internals page), with hex 80 = 128 decimal = 100% of damage. Those shields have the 80's shown in the position of the Physical damage multiplier... which is wrong. So simply using a hex editor to find and swap those 80's with the preceding respective values of 60 ( = 96 = 75% damage) and 6C ( = 108 = 84% damage) corrects the problem. There are more fun things you can do with a hex editor.... For example, at offset 17d8 in the .rom file (152dd in the .dsk file) you will find: FF 11 0F FF Those middle two values represent the equipment you are given at the start of the game (11 = Wooden Sword, 0F = Pine Torch). You can hex edit those and change them to anything you want by replacing them with the following values found on Chris's site: 00 Supreme Ring 01 Joule Ring 02 Elvish Sword 03 Mithril Shield 04 Seer Scroll 05 Thews Flask 06 Rime Ring 07 Vision Scroll 08 Abye Flask 09 Hale Flask 0A Solar Torch 0B Bronze Shield 0C Vulcan Ring 0D Iron Sword 0E Lunar Torch 0F Pine Torch 10 Leather Shield 11 Wooden Sword Now, I do not condone actual cheating, since that just spoils the challenge of the game (if you wanna cheat, just give yourself the Supreme Ring at the start, Incant it, and win the game instantly!), but there are fun things you can play around with. For example, you can easily replace your Pine Torch with a Solar Torch so you don't have to worry about light for a long time, and you can see EVERYTHING. Or give yourself a Thews Flask instead of a sword, drink that sucker and hulk out, and you can easily kill all the monsters on the 1st level with your bare hands! Replace your sword with a Bronze Shield and watch that shield fix in action, plus it actually makes a stronger weapon than your Wooden Sword. The Mithril Shield is fierce. For a fun challenge that is less unbalancing, replace your sword with a Seer Scroll, and play the game. You will have to fight with your bare hands while you hunt down a shield or sword to attack with, but that scroll will let you see EVERYTHING on the map, which is cool for the first 3 levels, since normally you can't find that scroll until level 4. You could alternately replace your torch with the scroll, and then wander around in the dark (with your magic map) until you can flail around and kill something carrying a torch. There are various other things you might do using the information on Chris's site, such as give your Ring 255 charges, or cause Torches to do massive magical damage, or make those shields reduce all incoming damage to 0.... Just be sure to back up your files before editing! To change these various things, reference the following sections of Chris's site. If you look at the address shown for each line, just change the D to a 1 and that should be the correct location to seek in the .rom file using a a hex editor, or you can just search for the specific string of values that you are seeking. For example, you can easily change the number of creatures on any level. Look at the "CreaturesOnLevels:" section, then just locate and alter those values in the .rom file. "Special object properties by proper" will let you change various properties of items. The basic properties of items can be found under "Object descriptors by object index." The range for physical and magical attack is from 0-255 as a hexidecimal value. (Be careful maxing out damage -- using such powerful weapons will strain your heart!) The "reveal" field shows required power level to "Reveal" an item, normally 5-255 in hex. "MonsterData:" shows the various aspects of monsters which can be altered (you may need to check the Internals page to understand these values). You can also alter the number of each item appearing on each level, but that's a bit more complicated to explain. You can figure it out from the "ObjectDist:" section. It's even possible to change the appearance of the monsters by editing the values of where the lines are drawn... but that would get complicated! If someone really wanted to, they could hack the .rom in all kinds of ways to create a totally different game of Daggorath, perhaps creating an easy or hard version.